package picol.model.asa.expr;

import picol.model.asa.inst.ASAInstPicoL;
import picol.model.memory.TableSymbole;

/**
 * Classe de gestion de l'affectation
 * @author Aurélien Marcel - Julien Sanderson
 */
public class ASAExprAffect extends ASAExpr {

    protected ASAExpr expr1;
    protected ASAExpr expr2;

    public ASAExprAffect(ASAExpr _expr1, ASAExpr _expr2) {
        this.expr1 = _expr1;
        this.expr2 = _expr2;
    }

    @Override
    public ASAExpr getExpr1() {
        return this.expr1;
    }

    @Override
    public ASAExpr getExpr2() {
        return this.expr2;
    }

    public String getLabelExplorateur() {
        return "AFFECTATION";
    }

    @Override
    public int evalue() {
        String ident = "" + expr1.getToken();
        int resultat = expr2.evalue();
        for (TableSymbole table : ASAInstPicoL.listTblSym) {
            if (table.existeVariable(ident)) {
                table.modifierVariable(ident, new ASAExprEntier(resultat));
            }
        }
        return resultat;
    }
}
